package com.dong.common.util;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @description: 请求工具类
 * @author: 陈瑞东
 * @create: 2021-08-25 11:15
 */
public class RequestUtils {

    /**
     * 发送请求
     * @param path 路径
     * @param params 参数
     * @return
     */
    public static Object sendRequest(String path, Map<String, Object> params) {
        try {
            if (!path.startsWith("/")) {
                path = "/" + path;
            }
            Object[] controller = Global.getController(path);
            // 如果为 null 则说明没有对应的controller
            if (controller == null) {
                return null;
            }
            Object obj = controller[0];
            Method method = (Method) controller[1];
            // 获取参数列表
            Parameter[] parameters = method.getParameters();
            // 如果参数列表为空，则不需要参数，直接调用方法
            if (parameters.length == 0) {
                Object result = method.invoke(obj);
                return result;
            }
            Object[] paramsArr = new Object[parameters.length];
            // 填充参数
            for (int i = 0; i < parameters.length; i++) {
                paramsArr[i] = params.get(parameters[i].getName());
            }
            Object result = method.invoke(obj, paramsArr);
            return result;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
